﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Linq;

namespace ibba.src.norisk.ServiceImplementation
{
    public static class GenericExtension
    {


        public static EntitySet<T> ToEntitySet<T>(this IEnumerable<T> source) where T : class
        {
            var es = new EntitySet<T>();
            es.AddRange(source);
            return es;
        }

    }

    public class TranslateProdutoModalidade
    {
        public static List<Contracts.ProdutoModalidade> Translate(List<ibba.src.norisk.DataContext.ProdutoModalidade> pProdutos)
        {
            return ((
                        from p in pProdutos
                        select new Contracts.ProdutoModalidade()
                        {
                            Id = p.Id,
                            CodigoModalidade = p.CodigoModalidade,
                            CodigoProduto = p.CodigoProduto,
                            DescricaoModalidade = p.DescricaoModalidade,
                            DescricaoProduto = p.DescricaoProduto,
                            UsaProcessamento = p.UtilizadoProcessamento
                        }
                     ).ToList()
                  );
        }

        //public static ibba.src.norisk.DataContext.ProdutoModalidade Translate(Contracts.ProdutoModalidade pProduto, Contracts.DetalheProdutoModalidade pDetalhes)
        //{
        //    return (new ibba.src.norisk.DataContext.ProdutoModalidade()
        //    {
        //        Ativo = pDetalhes.Ativo,
        //        CodigoModalidade = pProduto.CodigoModalidade,
        //        CodigoModalidadeInversa = pDetalhes.CodigoModalidadeInversa,
        //        EhPre = pDetalhes.CodigoPre,
        //        CodigoProduto = pProduto.CodigoProduto,
        //        CodigoProdutoModalidade = pDetalhes.CodigoProdutoModalidade,
        //        DescricaoModalidade = pProduto.DescricaoModalidade,
        //        DescricaoProduto = pProduto.DescricaoProduto,
        //        EhIntradia = pDetalhes.EhIntradia,
        //        EhIsda = pDetalhes.EhIsda,
        //        Id = pProduto.Id,
        //        IdClasseProduto = pDetalhes.IdClasseProduto,
        //        CodigoBaseCalculo = pDetalhes.UsaOperacaoOuContabil,
        //        UtilizadoProcessamento = pProduto.UsaProcessamento,
        //        Parametros = (from p in pDetalhes.Parametros
        //                      select new ibba.src.norisk.DataContext.ParametroProdutoModalidade()
        //                      {
        //                          IdIdProdutoRisco = p.IdProdutoRisco,
        //                          IdParametro = p.IdParametro,
        //                          Valor =  p.valor
        //                      }).ToEntitySet()
        //    });
        //}

        public static BusinessEntities.ProdutoModalidade Translate(Contracts.ProdutoModalidade pProduto, Contracts.DetalheProdutoModalidade pDetalhes)
        {
            return (new BusinessEntities.ProdutoModalidade()
            {
                Ativo = pDetalhes.Ativo,
                CodigoModalidade = pProduto.CodigoModalidade,
                CodigoModalidadeInversa = pDetalhes.CodigoModalidadeInversa,
                CodigoProduto = pProduto.CodigoProduto,
                CodigoProdutoModalidade = pDetalhes.CodigoProdutoModalidade,
                DescricaoModalidade = pProduto.DescricaoModalidade,
                DescricaoProduto = pProduto.DescricaoProduto,
                EhIntradia = pDetalhes.EhIntradia,
                EhIsda = pDetalhes.EhIsda,
                CodigoPre = pDetalhes.CodigoPre,
                Id = pProduto.Id,
                IdClasseProduto = pDetalhes.IdClasseProduto,
                CodigoBaseCalculo = pDetalhes.UsaOperacaoOuContabil,
                UsaOperacaoOuContabil = pDetalhes.UsaOperacaoOuContabil,
                UsaProcessamento = pProduto.UsaProcessamento.ToString(),
                Parametros = (from p in pDetalhes.Parametros
                              select new BusinessEntities.ParametroProdutoModalidade()
                              {
                                  CodigoProdutoRisco = p.IdProdutoRisco,
                                  CodigoParametro = p.IdParametro,
                                  VlrParametro = p.valor
                              }).ToList()
            });
        }
    }
}
